package top.chatgqt.SmartChargeStation.netty.server.handlers;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToMessageDecoder;
import io.netty.handler.codec.http.websocketx.BinaryWebSocketFrame;
import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
import io.netty.handler.codec.http.websocketx.WebSocketFrame;
import lombok.extern.slf4j.Slf4j;

import java.util.List;


/**
 * 消息类型转换
 */
@Slf4j
public class ProtoMsgToMsgHandler extends MessageToMessageDecoder<WebSocketFrame> {
    @Override
    protected void decode(ChannelHandlerContext ctx, WebSocketFrame msg, List<Object> out) throws Exception {

        if (msg instanceof BinaryWebSocketFrame) { // 数据帧是二进制类型
            /*
            微信小程序发送过来的Protobuf序列化之后的数据是二进制的，在WebSocket中是BinaryWebSocket类型

            Protobuf序列数据会在这里处理
            */

            ByteBuf byteBuf = ((BinaryWebSocketFrame) msg).content();
            out.add(byteBuf);

            byteBuf.retain();
        }
    }
}
